Intelligent scheduling for remote computers

ABSTRACT

A method of protecting data on a mobile computing device using a storage network by deploying to the mobile computing device, a synchronization agent and then associating a synchronization policy with the synchronization agent. The mobile computing device is monitored for at least one threshold event. Its determined that the threshold event has occurred which causes a request to initiate a data synchronization event to be transmitted. The response to the request is synchronizing the mobile computing device with the storage network.

INCORPORATION BY REFERENCE TO ANY PRIORITY APPLICATIONS

Any and all applications for which a foreign or domestic priority claimis identified in the Application Data Sheet, or any correction thereto,are hereby incorporated by reference into this application under 37 CFR1.57.

TECHNICAL FIELD

The present subject matter relates to systems and methods to performscheduled data backup and/or synchronization with portable or remotedevices that typically have infrequent or unpredictable connections to adata storage network.

BACKGROUND OF THE INVENTION

Performing data synchronization is an important task in any system theprocesses and manages data. Synchronization is particularly importantwhen a data volume residing in one location in a system is to bereplicated and maintained on another part of the system for datasecurity purposes. Replicated data volumes can be used, for example, forbackup repositories, data stores, or in synchronous networks which canutilize multiple workstations requiring identical data storage.

File replication may include continually capturing write activity on asource computer and transmitting this write activity from the sourcecomputer to a destination or target computer in real-time or nearreal-time. A first step in some existing file replication systems, asillustrated in FIG. 1, is typically a synchronization process to ensurethat the source data 22 at a source device and the destination data 24at a destination storage device are substantially the same. That is,before a destination computer 28 can begin storing write activityassociated with the source data 22 at a source computer 26, the system20 may check to determine if the previously written source data 22 isstored at the destination computer 28, so restore points and otherrestore data may be updated and indexed.

The file replication, if not occurring in real-time, is scheduled tooccur at particular intervals. Typically the scheduling is set by theadministrator at a central location and the instructions are passed toservers responsible for coordinating the data transfer. The servers thencommunicate with client devices over a network (local (LAN), wide (WAN),Internet, etc.) triggering the backup or synchronization routineaccording to schedule. For example, certain levels of backup/storage canoccur every night, every week or every month. Additionally, differentdevices and files on those devices can be scheduled at differentintervals.

In recent years, more and more users are working on portable devices,such as Personal Digital Assistants (PDAs), Smart Phones, laptops andtablet computers. These devices may rarely be connected to the datastorage network on the LAN. Thus, even though these devices arescheduled to be backed up, if the device is not on the LAN at the timethe servers send the instructions, the data is not synchronized.

This presents a concern to system administrators and network operators,because portable devices are at higher risk of being lost or damaged andas such should be synchronized more often, not less. Hence, a needexists for scheduling portable devices so that the data on them isretrieved and stored in a timely manner and with minimum interruption tothe user.

SUMMARY OF THE INVENTION

Thus, systems and methods of the present invention address thedeficiencies pointed out above an other shortcomings of conventionalsystems as further described herein.

One example is a method for scheduling data storage events in a storagenetwork that can have a portable device communicating over a networkwith a server. The method can include configuring, at the server, anddeploying to the portable device, a data storage policy. The datastorage policy can be implemented on the portable device using anintelligent scheduling agent. At least one threshold event can bemonitored on the portable device to determine if the threshold event hasoccurred. Once the event has occurred, a request can be transmitted tothe server to implement a data storage event. The server will thenrespond to the request and implement the data storage event the portabledevice.

In another example, the transmission of the request can be delayed for apredetermined time. Further monitoring of the threshold event can occurduring the delay. If it is determined that the at least one thresholdevent has ceased to occur, the transmission can be cancelled.

Monitoring of at least one threshold event can also occur during theimplementation of the data storage policy. Again, if it is determinedthat the threshold event has ceased to occur, the intelligent schedulingagent can suspend the implementation of the data storage event.

The monitoring can include monitoring a time interval, the network, apower state of the portable device, CPU utilization of the portabledevice, a data store communicating with the portable device, and apriority rank. The monitoring of the network can also entail monitoringa link between the portable device and the server, and monitoring an IPaddress of the server.

Monitoring the power state may monitor an A/C power status or thebattery power status of the portable device. The monitoring the CPUutilization can include comparing an actual CPU utilization to a presetCPU threshold. Monitoring the data store may include comparing an actualdata store capacity to a pr data store capacity threshold.

In another example of protecting data on a mobile computing device usinga storage network, a method can deploy to the mobile computing device, asynchronization agent. A synchronization policy can be associated withthe synchronization agent. The mobile computing device can be monitoredfor at least one threshold event and, once determined that the at leastone threshold has occurred, transmit a request to initiate a datasynchronization event. The request can be responded to by synchronizingthe mobile computing device with the storage network.

The method may further include periodically updating the synchronizationpolicy. The updating of the synchronization policy can be performed whena data synchronization event occurs or based on network administratorinput. Alternately, the updating of the synchronization policy can beperformed based on input from a user of the mobile computing device.Further, the updating of the synchronization policy can be performedsubstantially automatically based on changing conditions in the storagenetwork or mobile computing device.

As a result, a portable device can be backed-up or its data synchronizedduring the times when it is available on the network, as opposed to whenthe device is scheduled by a server.

Additional advantages and novel features will be set forth in part inthe description which follows, and in part will become apparent to thoseskilled in the art upon examination of the following and theaccompanying drawings or can be learned by production or operation ofthe examples. The advantages of the present teachings can be realizedand attained by practice or use of various aspects of the methodologies,instrumentalities and combinations set forth in the detailed examplesdiscussed below, which are illustrative in nature and not to be deemedas limiting.

BRIEF DESCRIPTION OF THE DRAWINGS

The drawing figures depict one or more implementations in accord withthe present teachings, by way of example only, not by way of limitation.In the figures, like reference numerals refer to the same or similarelements.

FIG. 1 is a block diagram of a prior art system;

FIG. 2 is a block diagram of a system for performing storage operationson electronic data in a computer network in accordance with certainaspects of the present invention;

FIG. 3 is a block diagram of an example of a portable client computerconfigured in accordance with certain aspects of the present invention;

FIG. 4 is a flow chart illustrating some of the steps to implement anexemplary intelligent data storage schedule;

FIG. 5 is screen image and example of certain scheduling options inaccordance with certain aspects of the present invention;

FIG. 6. is screen image and example of a utility resident on theportable device in accordance with certain aspects of the presentinvention; and

FIG. 7 is a flow chart illustrating an implementation of an exemplaryintelligent data synchronization in accordance with certain aspects ofthe present invention.

FIG. 8 is a flow chart illustrating another implementation of anexemplary intelligent data synchronization in accordance with certainaspects of the present invention.

DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENT

In the following detailed description, numerous specific details are setforth by way of examples in order to provide a thorough understanding ofthe relevant teachings. However, it should be apparent to those skilledin the art that the present teachings may be practiced without suchdetails. In other instances, well known methods, procedures, components,and/or circuitry have been described at a relatively high-level, withoutdetail, in order to avoid unnecessarily obscuring aspects of the presentteachings.

The various examples disclosed herein relate to the intelligentscheduling of backups, synchronization, and file storage in remote andportable computing devices.

Reference now is made in detail to the examples illustrated in theaccompanying drawings and discussed below. FIG. 2 illustrates exemplaryaspects and features of the present invention. FIG. 2 is a block diagramof a storage operation cell 50 that can perform storage operations onelectronic data in a computer network in accordance with an example asillustrated. As shown, a storage operation cell 50 can generally includea storage manager 100, a data agent 95, a media agent 105, a storagedevice 115, a client computer 85, a data or information store 90, and,can include certain other components such as databases 110, 111, a jobsagent 120, an interface module 125, a management agent 130, and anintelligent scheduling agent 133. Portions of such a system and elementsthereof are exemplary of a modular storage management systems such asthe CommVault QiNetix™ system, and also the CommVault GALAXY™ backupsystem, available from CommVault Systems, Inc. of Oceanport, N.J., andfurther described in U.S. Pat. No. 7,035,880, which is incorporatedherein by reference in its entirety.

A storage operation cell, such as cell 50, can generally includecombinations of hardware and software components associated withperforming storage operations on electronic data. Exemplary storageoperation cells according to examples of the invention can includeCommCells as embodied in the QNet storage management system and theQiNetix storage management system by CommVault Systems of Oceanport,N.J. According to some examples of the invention, storage operationscell 50 can be related to backup cells and provide some or all of thefunctionality of backup cells as described in U.S. Pat. No. 7,454,566which is hereby incorporated by reference in its entirety.

Storage operations performed by storage operation cell 50 can includecreating, storing, retrieving, and migrating primary data copies andsecondary data copies (which may include, for example, snapshot copies,backup copies, Hierarchical Storage Management (“HSM”) copies, archivecopies, and other types of copies of electronic data). Storage operationcell 50 can also provide one or more integrated management consoles forusers or system processes to interface with in order to perform certainstorage operations on electronic data as further described herein. Suchintegrated management consoles can be displayed at a central controlfacility or several similar consoles distributed throughout multiplenetwork locations to provide global or geographically specific networkdata storage information. The use of integrated management consoles canprovide a unified view of the data operations across the network.

In addition to the integrated management consoles that allow aninterface for the server side components 150, the intelligent schedulingagent 133 can include a similar management console, in either form orfunction, for the client devices 85. The intelligent scheduling agent133 and the client devices 85 are discussed in more detail below.

A unified view of the data operations collected across the entirestorage network can provide an advantageous benefit in the management ofthe network. The unified view can of the utilized resources of thenetwork. Presenting such data to one centralized management console canallow for a more complete and efficient administration of the availableresources of the network. The storage manager 100, either via apreconfigured policy or via a manual operation from a systemadministrator, can reallocate resources to more efficiently run thenetwork. Data paths from storage operation cells can be re-routed toavoid areas of the network which are congested by taking advantage ofunderutilized data paths or operation cells. Additionally, should astorage operation cell arrive at or exceed a database size maximum,storage device capacity maximum or fail outright, several routes ofredundancy can be triggered to ensure the data arrives at the locationfor which it was intended. A unified view can provide the manager with acollective status of the entire network allowing the system to adapt andreallocate the many resources of the network for faster and moreefficient utilization of those resources.

In some examples, storage operations can be performed according to ragepolicy. A storage policy generally can be a data structure or otherinformation source that includes a set of preferences and other storagecriteria for performing a storage operation and/or other functions thatrelate to storage operation. The preferences and storage criteria caninclude, but are not limited to, a storage location, relationshipsbetween system components, network pathway to utilize, retentionpolicies, data characteristics, compression or encryption requirements,preferred system components to utilize in a storage operation, and othercriteria relating to a storage operation. For example, a storage policycan indicate that certain data is to be stored in a specific storagedevice, retained for a specified period of time before being aged toanother tier of secondary storage, copied to secondary storage using aspecified number of streams, etc. In one example, a storage policy canbe stored in a storage manager database 111. Alternatively, certain datamay be stored to archive media as metadata for use in restore operationsor other storage operations. In other examples, the data may be storedto other locations or components of the system.

A schedule policy specifies when and how often to perform storageoperations and can also specify performing certain storage operations(i.e. replicating certain data) on sub-clients of data including how tohandle those sub-clients. A sub-client can represent static or dynamicassociations of portions of data of a volume and are generally mutuallyexclusive. Thus, a portion of data may be given a label and the or otherstorage location used by the system. Sub-clients may also be used as aneffective administrative scheme of organizing data according to datatype, department within the enterprise, storage preferences, etc. Forexample, an administrator may find it preferable to separate e-mail datafrom financial data using two different sub-clients having differentstorage preferences, retention criteria, etc.

Storage operation cells may contain not only physical devices, but alsomay represent logical concepts, organizations, and hierarchies. Forexample, a first storage operation cell 50 can be configured to performHSM operations, such as data backup or other types of data migration,and can include a variety of physical components including a storagemanager 100 (or management agent 130), a media agent 105, a clientcomponent 85, and other components as described herein. A second storageoperation cell can contain the same or similar physical components.However, it may be configured to perform storage resource management(“SRM”) operations, such as monitoring a primary data copy or performingother known SRM operations.

In one example, a data agent 95 can be a software module or part of asoftware module that is generally responsible for archiving, migrating,and recovering data from client computer 85 stored in an informationstore 90 or other memory location. Each computer 85 has at least onedata agent and a intelligent scheduling agent 133. Storage operationcell 50 can also support computers 85 having multiple clients (e.g.,each computer can have multiple applications, with each applicationconsidered as either a client or sub-client).

In some examples, the data agents 95 can be distributed between clientcomputer 85 and the storage manager 100 (and any other intermediatecomponents (not explicitly shown)) or can be deployed from a remotelocation or its functions approximated by a remote process that performssome or all of the functions of the data agent 95. The data agent 95 canalso generate metadata associated with the data that it is generallyresponsible for replicating, archiving, migrating, and recovering fromclient computer 85. This metadata can be appended or embedded within theclient data as it is transferred to a backup or secondary storagelocation, such as a replication storage device, under the direction ofstorage manager 100.

One example can also include multiple data agents 95, each of which canbe used to backup, migrate, and recover data associated with a differentapplication. For example, different individual data agents 95 can bedesigned to handle MICROSOFT EXCHANGE® data, MICROSOFT SHAREPOINT® dataor other collaborative project and document management data, LOTUSNOTES® data, MICROSOFT WINDOWS 2000® file system data, MICROSOFT® ActiveDirectory Objects data, and other types of data known in the art.Alternatively, one or more generic data agents 95 can be used to handleand process multiple data types rather than using the specialized dataagents described above.

In an example utilizing a client computer 85 having two or more types ofdata, one data agent 95 can be used for each data type to archive,migrate, and restore the client computer 85 data. For example, tobackup, migrate, and restore all of the data on a MICROSOFT EXCHANGE2000® server, the client computer 85 can use one MICROSOFT EXCHANGE2000® Mailbox data agent to backup the EXCHANGE 2000® mailboxes, oneMICROSOFT EXCHANGE 2000® Database data agent to backup the EXCHANGE2000® databases, one MICROSOFT EXCHANGE 2000®. Public Folder data agentto backup the EXCHANGE 2000® Public Folders, and one MICROSOFT WINDOWS2000® File System data agent to backup the file system of the computer85. These data agents 95 would be treated as four separate data agents95 by the system even though they reside on the same client computer 85.

In an alternative example, one or more generic data agents 95 can beused, each of which can be capable of handling two or more data types.For example, one generic data agent 95 can be used to back up, migrateand restore MICROSOFT EXCHANGE 2000® Mailbox data and MICROSOFT EXCHANGE2000® Database data while another generic data agent can handleMICROSOFT EXCHANGE 2000® Public Folder data and MICROSOFT WINDOWS 2000®File System data.

While the illustrative examples described herein detail data agentsimplemented, specifically or generically, for Microsoft® applications,one skilled in the art should recognize that other application types(i.e. Oracle data, SQL data, LOTUS NOTES®, etc.) can be implementedwithout deviating from the scope of the present invention.

In one example, the storage manager 100 can include a software module(not shown) or other application that can coordinate and control storageoperations performed by storage operation cell 50. The storage manager100 can communicate with the elements of storage operation cell 50including computers 85, data agents 95, media agents 105, and storagedevices 115.

In one example the storage manager 100 can include a jobs agent 120 thatmonitors the status of some or all storage operations previouslyperformed, currently being performed, or scheduled to be performed bythe storage operation cell 50. The jobs agent 120 can be linked with aninterface module 125 (typically a software module or application). Theinterface module 125 can include information processing and displaysoftware, such as a graphical user interface (“GUI”), an applicationprogram interface (“API”), or other interactive interface through whichusers and system processes can retrieve information about the status ofstorage operations. Through the interface module 125, users canoptionally issue instructions to various storage operation cells 50regarding performance of the storage operations as described andcontemplated by example of the present invention. For example, a usercan modify a schedule concerning the number of pending snapshot copiesor other types of copies scheduled as needed to suit particular needs orrequirements. As another example, a user can utilize the GUI to view thestatus of pending storage operations in some or all of the storageoperation cells in a given network or to monitor the status of certaincomponents in a particular storage operation cell (e.g., the amount ofstorage capacity left in a particular storage device). As a furtherexample, the interface module 125 can display the cost metricsassociated with a particular type of data storage and can allow a userto determine the overall and target cost metrics associated with aparticular data type. This determination can also be done for specificstorage operation cells 50 or any other storage operation as predefinedor user-defined.

One example of the storage manager 100 can also include a managementagent 130 that is typically implemented as a software module orapplication program. The management agent 130 can provide an interfacethat allows various management components in other storage operationcells 50 to communicate with one another. For example, one example of anetwork configuration can include multiple cells adjacent to one anotheror otherwise logically related in a WAN or LAN configuration (notexplicitly shown). With this arrangement, each cell 50 can be connectedto the other through each respective management agent 130. This allowseach cell 50 to send and receive certain pertinent information fromother cells including status information, routing information,information regarding capacity and utilization, etc. These communicationpaths can also be used to convey information and instructions regardingstorage operations.

In an example, the management agent 130 in the first storage operationcell 50 may communicate with a management agent 130 in a second storageoperation cell (not illustrated) regarding the status of storageoperations in the second storage operation cell. Another illustrativeexample may include a first management agent 130 in a first storageoperation cell 50 that may communicate with a second management agent ina second storage operation cell to control the storage manager (andother components) of the second storage operation cell via the firstmanagement agent 130 contained in the storage manager 100 of the firststorage operation cell.

Another illustrative example may include the management agent 130 in thefirst storage operation cell 50 communicating directly with andcontrolling the components in a second storage management cell (notillustrated), bypassing the storage manager 100 in the second storagemanagement cell. In an alternative example, the storage operation cellsmay also be organized hierarchically such that hierarchically superiorcells control or pass information to hierarchically subordinate cells orvice versa.

The storage manager 100 can also maintain, in an 111. The data stored inthe database 111 can be used to indicate logical associations betweencomponents of the system, user preferences, management tasks, StorageResource Management (SRM) data, Hierarchical Storage Management (HSM)data or other useful data. The SRM data can, for example, includeinformation that relates to monitoring the health and status of theprimary copies of data (e.g., live or production line copies). HSM datacan, for example, be related to information associated with migratingand storing secondary data copies including archival volumes to variousstorage devices in the storage system. As further described herein, someof this information can be stored in a media agent database 110 or otherlocal data store. For example, the storage manager 100 can use data fromthe database 111 to track logical associations between the media agents105 and the storage devices 115.

In one example, a media agent 105 can be implemented as a softwaremodule that conveys data, as directed by the storage manager 100,between computer 85 and one or more storage devices 115 such as a tapelibrary, a magnetic media storage device, an optical media storagedevice, or any other suitable storage device. Media agents 105 can belinked with and control a storage device 115 associated with aparticular media agent. In some examples, a media agent 105 can beconsidered to be associated with a particular storage device 115 if thatmedia agent 105 is capable of routing and storing data to particularstorage device 115.

In operation, a media agent 105 associated with a particular storagedevice 115 can instruct the storage device to use a robotic arm or otherretrieval means to load or eject a certain storage media, and tosubsequently archive, migrate, or restore data to or from that media.The media agents 105 can communicate with the storage device 115 via asuitable communications path such as a SCSI (Small Computer SystemInterface), fiber channel or wireless communications link or othernetwork connections known in the art such as a WAN or LAN. Storagedevice 115 can be linked to a data agent 105 via a Storage Area Network(“SAN”).

Each media agent 105 may maintain an index cache, a database, or otherdata structure 110 which may store index data generated during backup,migration, and restore and other storage operations as described herein.For example, performing storage operations on MICROSOFT EXCHANGE® datamay generate index data. Such index data provides the media agent 105 orother external device with a fast and efficient mechanism for storagemanager database 111 can store data associating a client computer 85with a particular media agent 105 or storage device 115 as specified ina storage policy. The media agent database 110 can indicate where,specifically, the computer data is stored in the storage device 115,what specific files were stored, and other information associated withstorage of the computer data. In some examples, such index data can bestored along with the data backed up in the storage device 115, with anadditional copy of the index data written to the index cache 110. Thedata in the database 110 is thus readily available for use in storageoperations and other activities without having to be first retrievedfrom the storage device 115.

In some examples, certain components can reside and execute on the samecomputer. For example, a client computer 85 including a data agent 95, amedia agent 105, or a storage manager 100 coordinates and directs localarchiving, migration, and retrieval application functions as furtherdescribed in U.S. Pat. No. 7,035,880. Thus, client computer 85 canfunction independently or together with other similar client computers85.

Intelligent scheduling agent 133 can initiate and manage system backups,migrations, and data recovery. In some embodiments, intelligentscheduling agent 133 may be implemented on each client computer 85, orcan exist as a separate module or may be integrated with all or part ofdata agent 95. As a separate module, the intelligent scheduling agent133 may communicate with all or some of the software modules in storageoperation cell 50. For example, intelligent scheduling agent 133 cancommunicate with the storage manager 100, other data agents 95, themedia agents 105, other scheduling agents 133, and/or storage devices115.

During normal operation, some client computers 85 may be frequentlydisconnected from system 50 and may be mobile client computing devicessuch as a PDA or laptop computer. In embodiments of the invention, suchclient computers 85 may maintain and manage the synchronization of databetween storage operation cell 50 and mobile computer 85 using thesystems and methods further described herein, some of which includeintelligent scheduling agent 133. For example, intelligent schedulingagent 133 may be used as a means to initiate and manage a datasynchronization operation between data store 90 (which, e.g., may be thememory of a portable electronic device) and one or more of storagedevices 115. This may occur when computer 85 is connected to cell 50 orexpected to be connected to cell 50.

For example, synchronization, or attempted synchronization may initiallybe time-based (e.g., based on pre-scheduled time intervals), and then ifbackup fails to complete in this way after a period of time,connection-based (e.g., occur when mobile device 85 senses a connectionnetwork 85). For example, the initial synchronization may be attemptedbased on certain times when computer 80 is expected to be connected tocell 50 (e.g. at night) and/or when such a connection is effected andsensed by agent 133 (and at least one synchronization threshold has beenreached).

Intelligent scheduling agent 133 can also initiate and manage a storageoperation between two data stores 90 and associated storage devices,such as devices 115, each in a separate storage operation cell 50implemented as primary storage.

Turning now to FIG. 3, more a detailed view of an exemplarily portableclient computer 85 is illustrated. Portable client computer 85, forexample, may take the form of capabilities to support certain text andimage communications, such as email, picture communication and webbrowsing applications. In another example, the client computer 85 mayalso be a mobile station which is a portable computing device, i.e. ahandheld, laptop personal computer (PC), tablet computer (iPad®), or thelike. Client computer 85 can also take the form of a personal digitalassistant (PDA) or BlackBerry type device incorporating networkingcapabilities.

In some embodiments, intelligent scheduling agent 133 can exist separatefrom data agent 95, jobs agent 120, management agent 130, interfacemodule 125, and/or database 111 or replicate one or all of the functionsof some or all of the above elements. Intelligent scheduling agent 133may communicate over a link 160 to server components 150 to schedule andimplement a data storage policy for computer 85. Link 160, in certainexamples, can be a LAN (local area network) connection, a WAN (wide areanetwork) connection, the Internet, or any secured or unsecuredcommunications line, which in some embodiments may include one or morewireless links.

In the example illustrated in FIG. 4, the data storage policy for eachcell 50 (or groups of cells) may be configured and deployed to some orall of the computing elements in that cell 50. This policy is typicallyconfigured at a central element, e.g., the storage manager 100, by theadministrator (Step 400). The administrator may set data storage“windows” for when client computers 85 can be backed up or synchronized,what information is backed up (certain files, programs, entire drives,etc.) and to what storage devices 115 the data is sent to. This policycan then be deployed over the network and/or installed on individualcomputers 85 (Step 410). In the embodiment shown in FIG. 3, the policycan be transmitted to the portable client computer 85 over link 160.

In conventional systems, the storage policy is typically not sent to theindividual client computers 85. Rather, a central manager monitors theelements on the network and sends instructions to the individualelements when the time comes to implement the data storage protocol. If,however, as noted above, a portable client computer 85 is not connectedto the network at the time central manager attempts to backup computer85, the attempt failed. After noting the failure, the central managermay reschedule the data storage job for the next scheduled time window.This rescheduling takes place based on the assumption that portableclient computer 85 is continuously or frequently connected to thenetwork.

Often, however, mobile client computer 85 is not attached to the networkat regular or predictable intervals, and the device is continuouslyrescheduled for backup, which may never occur, or occur infrequently,placing its data in jeopardy.

One way aspects of the present invention addresses this shortcoming isto implement a storage policy directly on portable client computer 85.For example, the storage policy may be deployed on computer 85 alongwith (or associated with) intelligent scheduling agent 133. In thiscase, the intelligent scheduling agent 133 may reference this set ofpolicy parameters such as backup thresholds, file types to back up,priority backup information, etc. and does not rely on a central managerfor backup prompts. Such policy parameters can be set in advance by theadministrator or by the user of portable client computer 85. Intelligentscheduling agent 133 may then monitor the operation of portable clientcomputer 85 for the preset policy thresholds (step 420). If thethresholds are not met, intelligent scheduling agent 133 continues tomonitor the relevant metrics and may notify the user when backup isimminent so a network connection and subsequent timely synchronizationcan be arranged (step 440).

Once one or more policy thresholds are met, the next time portablecomputer 85 is connected to the network, intelligent scheduling agent133 may send a request to storage manager 100 to start a data storagejob (or synchronization) (Step 430). Storage manager 100 receives therequest and coordinates the data transfer process (Step 450). While thedata transfer job is underway, intelligent scheduling agent 133 maycontinue to monitor the conditions on the portable client computer 85(Step 460).

During job monitoring, if the conditions on the portable client computer85 change, or the computer is disconnected from the network, intelligentscheduling agent 133 may suspend, cancel or reschedule the job until thethreshold conditions are yet again met, and the job can be restarted(Step 470). If the conditions do not change to the point where theintelligent scheduling agent 133 suspends the job, the data storage jobtypically proceeds to completion. Storage manager 100 may thenacknowledge the completion of the job and the intelligent schedulingagent 133 can update its records accordingly and reset certainthresholds regarding the data storage status of the portable clientcomputer 85 (Step 480). This may involve saving restore pointinformation and resetting certain backup thresholds, etc.

In certain embodiments, during the monitoring step described above,intelligent scheduling agent 133 may assume partial or full control ofthe backup or synchronization operation from storage manager 100 andhandle some or all coordination and/or scheduling functions associatedtherewith.

In a typical data storage hierarchy, storage manager 100 begins theoperation and maintains control until completion or separation. In someembodiments, intelligent scheduling agent 133 may take control of thejob after storage manager 100 initiates it. This may occur after manager100 provides certain basic information such as routing or storage deviceaddresses and may direct agent 133 to provide termination or completioncodes or to cede control back to manager 100 under certain circumstances(overflow, network failure or outage, etc.). In this mode, intelligentscheduling agent stop, suspend, and restart or redefine the job asconditions dictate (control mode). Scheduling agent 133 may then informstorage manager 100 of the final outcome of the job so it can update thedata storage records accordingly, e.g., whether the job was completed,cancelled, or suspended for another time, and as well as what files orfile types were stored, update indexes, etc.

To expand on the above, FIG. 5 illustrates an example of a scheduling orpolicy configuration screen 500. This screen interface can be generatedas part of a GUI for the intelligent scheduling agent 133 or during theinitial policy configuration at the storage manager. Differentscheduling events or policies can be configured, and then named in anaming field 502, for ease of recall. Each configuration/policy mayinitially be scheduled during certain time intervals, in the timeinterval field 504, or can be configured with different threshold values506. The time interval field 504 allows a user to schedule a datastorage event one time, daily, weekly, monthly, periodically, or asdesired by an administrator.

Turning to the example of the threshold value fields 506 in FIG. 5, fourmajor categories of parameters are shown, job interval 508, network link510, power status 512, and resources 514. For job interval 508, the useror administrator can set the minimum interval at field 508A and themaximum interval at field 508B. The minimum job interval may measuretime since the last job initiation attempt—whether the job wassuccessful or not. The minimum interval 508A helps prevent theintelligent scheduling agent 133 from continuously trying to back up orsynchronize client computer 85 when all of the threshold conditions aresatisfied. The maximum interval acts as a safeguard that can guaranteethat backup or synchronization jobs will eventually run, even if thenon-critical thresholds are not yet met. The maximum job interval canmeasure time since the completion time of the last successful job.

The network link 510 options allow the administrator to restrict thedata transfer job to only instances when the portable client computer 85is on a wired network 510A. Thus, no wireless connections, which can befor the LAN, WAN, or external hot spots are allowed. Further,intelligent scheduling agent 133 can restrict data transfer jobs untilthe portable client computer 85 is on a specific network 510B. Thisrestriction may be selected for numerous reasons. One reason being thatthe data transfer rate over a wireless network is significantly lessthan some wired network connections. Additionally, wireless networks cansometimes break connections, thus interrupting the job and can lead torestarting the entire job.

Furthermore, specifying a certain network for backup can be used toensure that the data is not traveling over an unsecured or publicnetwork. For this option, intelligent scheduling agent 133 can monitorthe network adaptor to determine the network connection and type.

Moreover, some embodiments may allow certain data to be transferred overwireless links, while other data may require a hard-wired connection.For example, data classified as being under a certain security thresholdmay be synchronized wirelessly, whereas more sensitive information mayrequire a direct wired network connection (not shown). This approachprovides improved security, yet allows the backup or synchronization ofother information more freely, thereby reducing hard-wiredsynchronization time and improving the likelihood at least some datawill be backed up or synchronized in a timely fashion, enhancing overalldata security.

Returning to FIG. 5, an example of the power status options 512 isshown. In some embodiments, intelligent scheduling agent 133 can monitorthe power status of portable client computer 85 and only begin a job ifthe portable client computer 85 is running on A/C (outlet) power 512A.This option ensures that the client has enough power to maintain thenetwork connection 160 and maintain continuous access to the data store90. Similar issues are accounted for by stopping a data storage job ifthe portable client computer 85 switches from A/C power to battery power512B (and the battery power is below a level that will allow for jobcompletion).

Moreover, in some embodiments, intelligent scheduling agent 133 canmonitor the sleep/wake cycle of the portable client computer 85. If allother threshold parameters are met, intelligent scheduling agent 133 canbe configured to wake a sleeping client 85 to begin a data storage orsynchronization job. In addition, scheduling agent 133 may monitor thelife of the battery and determine, based on the type of data storageevent to be performed, if the battery has sufficient charge to completethe job. Another example can also make sure that sufficient batterypower remains to operate the client for another period of time.

Resource options 514 have similar issues to the power options 512 above.The utilization of the CPU (central processing unit) 514A is a goodindicator of whether or not a user is actively using the portable clientcomputer 85.

Additionally, if the user is engaged, it can determine to what extentthe computational ability is available to assist in the data transferprocess. If the user is utilizing a significant portion of the CPU, thenthe data transfer process slows down as it shares the CPU with theapplication the user is currently engaged with. One or both of the joband application slow down. The disk space option 514B determines howmuch disk space remains on data store 90 and if the free disk spacedrops below a set limit. This is to assure that the data is retrievedand stored in case data is deleted in a effort to free up more availabledisk space.

Another example of monitoring disk space is monitoring an amount ofinformation that is resident in the data store 90 that has never beenbacked up. For example, a user adds 20 GB of data to the data store 90.The intelligent scheduling agent 133 can identify that this new data hasnever been backed up and can send an immediate request for backup orsynchronization. Different volumes of new data can be set as thethreshold. In one example, it can be as small as 1 GB.

The intelligent scheduling agent 133 can also analyze the new data andif it determines that most of the new data is a program (e.g. executableand related files) it may not count those files to the 1 GB total.Alternately, if the new data is 1 GB of photographs, intelligentscheduling agent 133 can send a job request immediately. Further, theintelligent scheduling agent 133 can monitor the number of existing, butchanged, files. If a preset number of files have been changed since thelast data storage job, then the intelligent scheduling agent 133 canrequest a job.

Another option for intelligent scheduling agent 133 is whether or notthe Operating System (OS) and its scheduled events take priority over adata storage job. The priority of the job as opposed to the OS can beset independently and for each given instance, the intelligentscheduling agent 133 can determine which processes have a higherpriority. Alternately, the job can be given a fixed priority to makesure the job ranks appropriately.

In another example, the intelligent scheduling agent 133 can beconsidered a type of “opportunistic” scheduler, partially independent ofthe storage manager 100, and responsible for requesting backups orsynchronization based on certain specified criteria. In someembodiments, the intelligent scheduling agent 133 may support multipleschedules/polices per client computer 85. This partial autonomy allowsthe user more control of the data storage policies acting on theportable device 85. The user can delay a scheduled data storage session,but only for so long until the administrator's policy at the storagemanager 100 overrides the push-off and initiates the data backup.

The intelligent scheduling agent 133 can perform its monitoring task, inone example, using probes. The probes are each implemented to monitorspecific thresholds on the client device 85. Certain probes can bepassive, waiting for the threshold even to occur, while other probes canbe active, monitoring the status of certain features on a constantbasis.

Another exemplary feature of the intelligent scheduling agent 133 isthat it can delay sending a request once the thresholds are met. In thisexample, once the probes return information that all of the necessarythreshold parameters are met, the intelligent scheduling agent 133 canhave a preset delay before sending the request. This allows thethreshold parameters to stabilize, and if the parameters continue tomeet the threshold requirements after the set time (e.g., minutes), thenthe intelligent scheduling agent 133 transmits the request. This helpsto prevent unnecessary backups or backups that start and stop suddenly.

Further, to assist the user of the portable client device 85, a smallutility program may remain active to notify the user of the activitiesbeing performed by the intelligent scheduling agent 133. An example is a“tray utility” as illustrated in FIG. 6. It can be a GUI utilityoffering a status icon and a simple popup menu in the user's tray. Theutility 600 can indicate via an icon/animation whether a job iscurrently running or not, along with notifications in the expanded view602. One example of the utility 600 has simple popup menu(s) with“Start”, “Stop” and “Advanced” items to schedule data storage jobs.“Start” and “Stop” performs the selected task to the active clientbackup job. The “Advanced” option can allow access to the menuillustrated in FIG. 5. The utility can also show the time and details ofthe last successful job 604 for each cell 50. Further, if there is acurrent job in progress, the status of the particular job can beillustrated 606.

In an example of an implementation, as illustrated in FIG. 7, theadministrator sets a data storage policy for the cell 50 (Step 700)using the storage manager 100 and pushes the policy to the portableclient device 85 (Step 710). The intelligent scheduling agent 133deploys and activates probes to monitor for the chosen threshold events(Step 720). The storage manager 100 implements the standard policy, butthe portable client device 85 is not present on the network to receivethe instructions. The intelligent scheduling agent 133 then determinesthat a threshold event has occurred (Step 722) and that certainthreshold events are being reached.

The intelligent scheduling agent 133 checks to determine that portableclient device 85 is linked 160 to the server components 150 over anappropriate network (wired, IP address, etc.) (Step 724) and that thepower is sufficient to last the length of the job (on A/C power or 100%battery charge, or a policy of 50% minimum power, and more than 10% willremain after the job is completed) (Step 726). Other probes return theCPU utilization (below 10%) (Step 728), the free space status of thedata store 90 (45% capacity) (Step 730), and the job/OS priority rank(Step 732).

Given the above, the intelligent scheduling agent 133 determines thatenough or the correct number of threshold events have been met. However,before requesting a data storage job to begin, the intelligentscheduling agent 133 pauses and continues monitoring (Step 740). If thethreshold events remain after the delay period (e.g., 5 minutes), itthen complies with the request and begins the job (Step 760).Intelligent scheduling agent 133 continues to monitor the thresholdevents and for any user input (Step 770). Depending on the outcome ofthe monitoring, the job can be suspended (Step 780) or completed (Step790).

FIG. 8 illustrates another example of an implementation to protect dataon a mobile computing device using a storage network. This method mayinclude deploying a synchronization agent to the mobile computing device(step 800). The synchronization agent may initiate and manage systembackups, migrations, and data recovery. Further, the synchronizationagent may communicate with all or some of the software modules instorage operation cell 50. Additionally, it may be used to initiate andmanage a data synchronization operation between a data store 90 and oneor more of storage devices 115.

A synchronization policy may then be associated with the synchronizationagent (step 805). The policy may include parameters such as backupthresholds, file types to back up, priority backup information, etc. Inaddition, other categories of parameters may include an interval betweensynchronizations, quality and availability of a network link, a powerstatus of the mobile computing device and what computing resources areavailable on the mobile computing device.

The synchronization agent may also monitor one or more threshold eventson the mobile computing device (step 810). The threshold events can bebased on time (e.g. how long since the last synchronization), networkparameters (e.g. quality, type and security of the connection), poweravailable on the mobile computing device (e.g. current power level andusage, and expected drain by the proposed synchronization), computingparameters (e.g. is there sufficient storage space and/or can the CPUhandle the synchronization task smoothly), and priority (e.g. howimportant is the synchronization as opposed to other tasks beingexecuted by the mobile computing device).

Once the monitoring has determined that at least one threshold event hasoccurred (step 815), a request can be transmitted to initiate a datasynchronization event (step 820). In some examples, there can be a delaybetween the determination that the threshold event has occurred and therequest. This delay can be used to determine if the threshold eventsremains after a delay period (e.g., 5 minutes) to make sure thetriggering event is not transitory based on a change of operations or atechnical glitch or malfunction.

Once the request is received, the response is to then begin asynchronization event to synchronize the mobile computing device withthe storage network (step 825).

In another example, the synchronization policy can be periodicallyupdated (step 830). The updating of the synchronization policy canperformed when the data synchronization event occurs. Alternately, theupdating of the synchronization policy can be performed based on networkadministrator input. In still another example, the updating of thesynchronization policy can performed based on input from a user of themobile computing device. Further, the updating of the synchronizationpolicy can be performed substantially automatically based on changingconditions in the storage network or mobile computing device.

Systems and modules described herein may comprise software, firmware,hardware, or any combination(s) of software, firmware, or hardwaresuitable for the purposes described herein. Software and other modulesmay reside on servers, workstations, personal computers, computerizedtablets, PDAs, and other devices suitable for the purposes describedherein. Software and other modules may be accessible via local memory,via a network, via a browser or other application in an ASP context orvia other means suitable for the purposes described herein. Datastructures described herein may comprise computer files, variables,programming arrays, programming structures, or any electronicinformation storage schemes or methods, or any combinations thereof,suitable for the purposes described herein. User interface elementsdescribed herein may comprise elements from graphical user interfaces,command line interfaces, and other interfaces suitable for the purposesdescribed herein. Screenshots presented and described herein can bedisplayed differently as known in the art to input, access, change,manipulate, modify, alter, and work with information.

While the foregoing has described what are considered to be the bestmode and/or other examples, it is understood that various modificationsmay be made therein and that the subject matter disclosed herein may beimplemented in various forms and examples, and that the teachings may beapplied in numerous applications, only some of which have been describedherein. It is intended by the following claims to claim any and allapplications, modifications and variations that fall within the truescope of the present teachings.

1. (canceled)
 2. A method for scheduling secondary copy operationsassociated with a plurality of portable client computing devices, themethod comprising: storing primary data in at least a plurality ofportable computing devices, the primary data generated by one or moreapplications executing in the plurality of portable computing devices,each of the plurality of portable computing devices having a schedulingagent executing therein; for each of the plurality of portable clientcomputing devices: determining with the scheduling agent, a time when anetwork condition is met, and a power management condition is met;delaying with the scheduling agent, initiation of performance of thesecondary copy operation for a delay period; when the network conditionand the power management condition continue to be met after the delayperiod, sending a request from the scheduling agent to the storagemanager to initiate performance of the secondary copy operation; anddirecting with a storage manager component comprising computer hardware,at least one of the plurality of portable client computing devices toinitiate one or more secondary copy operations that copy the primarydata to one or more secondary storage devices remotely located from theplurality of portable computing devices, wherein the secondary copyoperation copies a first set of data stored in the portable clientcomputing device to the one or more secondary storage devices, andwherein the first set of data is associated with a first securitythreshold that is lower than a second security threshold associated witha second set of data; and wherein the secondary copy operation copiesthe second set of data with the second security threshold to the one ormore secondary storage devices when the network condition includes atleast a wired network connection.
 3. The method of claim 2, furthercomprising upon determining that the network condition or the powermanagement condition has ceased to be met, cancelling the performance ofthe secondary copy operation.
 4. The method of claim 2, furthercomprising upon determining that the network condition or the powermanagement condition has ceased to occur, suspending the performance ofthe secondary copy operation.
 5. The method of claim 2 wherein thenetwork condition comprises existence of either a wireless or a wiredconnection between the portable client computing device and the storagenetwork.
 6. The method of claim 2 wherein the power management conditioncomprises the existence of a connection of the portable device with anA/C power source.
 7. The method of claim 2 wherein a graphical userinterface (GUI) allows a user to specify a CPU utilization thresholdassociated with the portable client computing device, and wherein thescheduling agent initiates the performance of the secondary copyoperation when the network condition is met, the power managementcondition is met, and that a CPU utilization of the portable device isbelow the CPU utilization threshold.
 8. The method of claim 2 wherein agraphical user interface (GUI) allows a user to specify an availablestorage threshold associated with the portable client computing device,and wherein the scheduling agent initiates the performance of thesecondary copy operation is when the network condition is met, the powermanagement condition is met, and an amount of available storage spaceassociated with the portable client computing device is below theavailable storage threshold.
 9. The method of claim 2 wherein agraphical user interface (GUI) allows a user to specify a minimalinterval between the secondary copy operations, and wherein thescheduling agent initiates the performance of the secondary copyoperation when the network condition is met, the power managementcondition is met, and the minimum interval is met.
 10. The method ofclaim 2 wherein a graphical user interface (GUI) allows a user tospecify a maximum interval between two secondary copy operations, andwherein the scheduling agent initiates the performance of the secondarycopy operation after the maximum interval has expired.
 11. The method ofclaim 2 wherein the secondary copy operation copies the second set ofdata when the network condition includes a wireless network and amaximum interval between two secondary copy operations has expired. 12.A system for scheduling secondary copy operations associated with aplurality of portable computing devices, the system comprising: aplurality of portable computing devices comprising computer hardware theplurality of portable computing devices store primary data generated byone or more application, wherein each of the plurality of portablecomputing devices includes a scheduling agent; for each of the pluralityof portable computing devices: the scheduling agent determines that whena network condition is met, and a power management condition is met; thescheduling agent delays initiation of a performance of a secondary copyfor a delay period; when the network condition and the power managementcondition continue to be met after the delay period, the schedulingagent sends a request to the remotely located storage manager toinitiate the secondary copy operation; a storage manager component incommunication with the plurality of portable computing devices, thestorage manager component configured to direct at least one of theplurality of portable client computing devices to initiate one or moresecondary copy operations that copy the primary data to one or moresecondary storage devices remotely located from the plurality ofportable computing devices, wherein the secondary copy operation copiesa first set of data stored in the portable computing device to the oneor more secondary storage devices, wherein the first set of data isassociated with a first security threshold that is lower than a secondsecurity threshold associated with a second set of data; and wherein thesecondary copy operation copies the second set of data with the secondsecurity threshold to the one or more secondary storage devices when thenetwork condition includes at least a wired network connection.
 13. Thesystem of claim 12 wherein the scheduling agent is further configured tocancel the performance of the secondary copy operation upon adetermination that the network condition or the power managementcondition has ceased to be met.
 14. The system of claim 12 wherein thescheduling agent is further configured to suspend the performance of thesecondary copy operation upon a determination that the network conditionor the power management condition have ceased to be met.
 15. The systemof claim 12 wherein the network condition comprises existence of eithera wireless or a wired connection between the portable device and thestorage network.
 16. The system of claim 12 wherein the power managementcondition comprises the existence of a connection of the portable devicewith an A/C power source.
 17. The system of claim 12 wherein a graphicaluser interface (GUI) allows a user to specify a CPU utilizationthreshold associated with the portable device, and wherein thescheduling agent is further configured to initiate performance of thesecondary copy operation in response to a determination that the networkcondition is met, the power management condition is met, and a CPUutilization of the portable device is below the CPU utilizationthreshold.
 18. The system of claim 12 wherein a graphical user interface(GUI) allows a user to specify an available storage threshold associatedwith the portable device, and wherein the scheduling agent is furtherconfigured to initiate performance of the secondary copy operation inresponse to a determination that the network condition is met, the powermanagement condition is met, and that an amount of available storagespace associated with the portable device is below the available storagethreshold.
 19. The system of claim 12 wherein a graphical user interface(GUI) allows a user to specify a minimal interval between the secondarycopy operations, and wherein the scheduling agent initiates theperformance of the secondary copy operation when the network conditionis met, the power management condition is met, and the minimum intervalis met.
 20. The system of claim 12 wherein a graphical user interface(GUI) allows a user to specify a maximum interval between two secondarycopy operations, and wherein the scheduling agent initiates theperformance of the secondary copy operation after the maximum intervalhas expired.
 21. The method of claim 12 wherein the secondary copyoperation copies the second set of data when the network conditionincludes a wireless network and a maximum interval between two secondarycopy operations has expired.